﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;

namespace QLBH
{
    public partial class SanPham : UserControl
    {
        // biến toàn cục
        ISP List_Sp = new DSanPham();
        private CSanpham Sp;
        public SanPham()
        {
            InitializeComponent();
            load_Infosp();
        }

        #region hàm làm mới
        private void refesh()
        {
            cMasp.Text = "";
            tTensp.Text = "";
            cDvt.Text = "";
            cNsx.Text = "";
            tGia.Text = "";
        }
        #endregion
        #region hàm load thông tin
        private void load_Infosp()
        {
            List_Sp.Load("SanPham.a");
            //
            load_Gridsp();
        }
        private void load_Gridsp()
        {
            if (List_Sp != null)
            {
                DataTable tb = new DataTable("San Pham");
                DataColumn colCodP = new DataColumn("Mã SP");
                DataColumn colNameP = new DataColumn("Tên SP");
                DataColumn colC = new DataColumn("DVT"); ;
                DataColumn colCt = new DataColumn("Nước SX");
                DataColumn colMon = new DataColumn("Giá");
                tb.Columns.Add(colCodP);
                tb.Columns.Add(colNameP);
                tb.Columns.Add(colC);
                tb.Columns.Add(colCt);
                tb.Columns.Add(colMon);

                foreach (CSanpham sp in List_Sp)
                {
                    DataRow row = tb.NewRow();
                    row["Mã SP"] = sp.MaSp;
                    row["Tên SP"] = sp.TenSp;
                    row["DVT"] = sp.DonVt;
                    row["Nước SX"] = sp.NuocSx;
                    row["Giá"] = sp.Gia;
                    //
                    tb.Rows.Add(row);
                }
                dGVS_kq.DataSource = tb;
            }
        }
        #endregion
        #region thêm
        public void Themsp()
        {
            Sp = new CSanpham();
            Sp.MaSp = cMasp.Text;
            Sp.TenSp = tTensp.Text;
            Sp.DonVt = cDvt.Text;
            Sp.NuocSx = cNsx.Text;
            Sp.Gia = Int32.Parse(tGia.Text);

            List_Sp.Add(Sp);
            List_Sp.Save("SanPham.a");
        }
        #endregion
        #region xóa
        private int xoaSp()
        {
            int i;

            if (cMasp.Text == "")
            {
                MessageBox.Show("Nhập mã số sản phẩm cần xóa!", "Thông Báo");
            }
            else if (cMasp.Text != "")
            {
                for (i = 0; i < List_Sp.Count; i++)
                {
                    if ( List_Sp[i].MaSp == cMasp.Text)
                        return i;
                }
                MessageBox.Show("Không tìm thấy sản phẩm cần xóa!", "Thông Báo");
            }
            return -1;
        }
        #endregion
        #region sửa
        private int suaSp()
        {
            int i;

            if (cMasp.Text == "")
            {
                MessageBox.Show("Chọn sản phẩm cần sửa!", "Thông Báo");
            }
            else
            {
                for (i = 0; i < List_Sp.Count; i++)
                {
                    if (List_Sp[i].MaSp == cMasp.Text)
                        return i;
                }
                MessageBox.Show("Không tìm thấy sản phẩm cần sửa!", "Thông Báo");

            }
            return -1;
        }
        #endregion
        #region sự kiện mouse click
        private void bThemsp_Click(object sender, EventArgs e)
        {
            if (cMasp.Text == "" || tTensp.Text == "" || cDvt.Text == "" || cNsx.Text == "" || tGia.Text == "")
                MessageBox.Show("Bạn chưa nhập đủ thông tin!", "Thông Báo");
            else
            {
                Themsp();
                this.load_Gridsp();
                refesh();
                MessageBox.Show("Thêm thành công!");
            }
        }

        private void bXoasp_Click(object sender, EventArgs e)
        {
            if (xoaSp() != -1)
            {
                List_Sp.RemoveAt(xoaSp());
                List_Sp.Save("SanPham.a");
                refesh();
                this.load_Gridsp();
                MessageBox.Show("Đã xóa thành công!", "Thông Báo");
            }
        }

        private void bSuasp_Click(object sender, EventArgs e)
        {
            if (suaSp() != -1)
            {
                int i = suaSp();
                //update info
                List_Sp[i].TenSp = tTensp.Text;
                List_Sp[i].DonVt = cDvt.Text;
                List_Sp[i].NuocSx = cNsx.Text;
                if (tGia.Text != "")
                    List_Sp[i].Gia = Int32.Parse(tGia.Text);
                else
                    List_Sp[i].Gia = 0;
                List_Sp.Save("SanPham.a");
                refesh();
                //
                this.load_Gridsp();
                MessageBox.Show("Đã sửa thông tin thành công!", "Thông Báo");
            }
        }

        private void bLMsp_Click(object sender, EventArgs e)
        {
            refesh();
        }

        private void tGia_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void dGVS_kq_Click(object sender, EventArgs e)
        {
            if (dGVS_kq.SelectedRows.Count > 0)
            {
                DataGridViewRow row = dGVS_kq.SelectedRows[0];
                int vtHang = dGVS_kq.Rows.IndexOf(row);
                cMasp.Text = dGVS_kq[0, vtHang].Value.ToString();
                tTensp.Text = dGVS_kq[1, vtHang].Value.ToString();
                cDvt.Text = dGVS_kq[2, vtHang].Value.ToString();
                cNsx.Text = dGVS_kq[3, vtHang].Value.ToString();
                tGia.Text = dGVS_kq[4, vtHang].Value.ToString();
            }
        }

        private void cDvt_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }

        private void cNsx_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }
        #endregion
        #region Kiểm tra mã SP hợp lệ
        private void cMasp_Validating(object sender, CancelEventArgs e)
        {
            foreach (CSanpham Sp in List_Sp)
            {
                if (cMasp.Text == Sp.MaSp)
                {
                    MessageBox.Show("Đã tồn tại mã sản phẩm này!", "Thông Báo", MessageBoxButtons.OK);
                    cMasp.Text = "";
                }
            }
        }
        #endregion
    }
}
